package com.zoweunion.mechanic.dao.app;

import com.github.pagehelper.PageInfo;
import com.zoweunion.mechanic.model.app.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Mapper
@Component
public interface PersonalCenterMapper {

    /**
     * 获取所有任务列表
     *
     * @param reqMap
     * @return
     */
    List<TaskConfig> listTask(Map<String, Object> reqMap);

    /**
     * 获取用户所有任务列表
     *
     * @param reqMap
     * @return
     */
    List<Map<String, Object>> listUserTask(Map<String, Object> reqMap);

    /**
     * 获取用户所有完成列表
     *
     * @param reqMap
     * @return
     */
    List<Map> listUserCompletedTask(Map<String, Object> reqMap);


    /**
     * 获取任务信息
     * @param reqMap
     * @return
     */
    TaskConfig getTaskInfo(Map<String, Object> reqMap);

    /**
     * 加到客户任务表
     * @param reqMap
     * @return
     */
    int completeTask(Map<String, Object> reqMap);

    /**
     * 今天完成此任务的次数
     * @param userId
     * @param taskId
     * @return
     */
    int getTodayTimes(@Param("userId") String userId, @Param("taskId") String taskId);

    /**
     * 把数据插入到积分记录表
     * @param reqMap
     * @return
     */
    int insertIntegration(Map<String, Object> reqMap);

    /**
     * 我的积分明细列表
     * @param reqMap
     * @return
     */
    List<IntegrationRecord> listIntegrationRecordByUserId(Map<String, Object> reqMap);

    /**
     * 我的兑换记录列表
     * @param reqMap
     * @return
     */
    List<IntegrationExchangeRecord> listIntegrationExchangeRecordByUserId(Map<String, Object> reqMap);

    /**
     * 获取商品列表
     * @param reqMap
     * @return
     */
    List<IntegrationGoods> listIntegrationGoods(Map reqMap);

    /**
     * 保存积分兑现的商品记录
     * @param integrationExchangeRecord
     * @return
     */
    int saveIntegrationExchangeRecord(IntegrationExchangeRecord integrationExchangeRecord);

    /**
     * 保存积分明细记录
     * @param integrationRecord
     * @return
     */
    int saveIntegrationRecord(IntegrationRecord integrationRecord);

    /**
     * 通过id获取商品
     * @param id
     * @return
     */
    IntegrationGoods getIntegrationGoodsById(@Param("id") String id);

    /**
     * 奖品总数
     * @param reqMap
     * @return
     */
    int customerPrizeCount(Map<String, Object> reqMap);

    /**
     * 中奖列表
     * @param reqMap
     * @return
     */
    List<Map<String, Object>> getCustomerPrizeList(Map<String, Object> reqMap);

    /**
     * 填写中奖信息
     * @param reqMap
     * @return
     */
    int fillGetPrizeInfo(Map<String, Object> reqMap);

    /**
     * 获取奖品信息
     * @param reqMap
     * @return
     */
    Map<String, Object> getSignInPrize(Map<String, Object> reqMap);

    /**
     * 获取奖品列表
     * @param reqMap
     * @return
     */
    List<Map<String, Object>> listPrize(@Param("reqMap") Map<String, Object> reqMap);

    /**
     * 获取
     * @param userId
     * @param isNow
     * @return
     */
    int getCompletedTimesByUserId(@Param("userId") String userId, @Param("taskId") String taskId, @Param("isNow") Boolean isNow);

    /**
     * 获取访问人列表记录
     * @param reqMap
     * @return
     */
    List<Map<String, Object>> getVisitList(Map<String, Object> reqMap);
    /**
     * 获取标头信息
     * @param receiveUserMap
     * @return
     */
    List<Map<String, Object>> getVisit(Map<String, Object> receiveUserMap);
    /**
     * 获取今日访问人数
     * @param reqMap
     * @return
     */
    int getTodayVisitCount(Map<String, Object> reqMap);

    /**
     * 获取总的访问人数
     * @param reqMap
     * @return
     */
    int getTotalVisitCount(Map<String, Object> reqMap);
    /*
    *10点定时任务，查询接收人
     */
    List<Map<String,Object>> getReceiveUsers();
    /**
     * 获取浏览前一天的总数
     * @param reqMap
     * @return
     */
    int getAccessCount(Map<String, Object> reqMap);
    /**
     * 获取收藏的前一天的总数
     * @param reqMap
     * @return
     */
    int getFavoriteCount(Map<String, Object> reqMap);
    /**
     * 获取转发的前一天的总数
     * @param reqMap
     * @return
     */
    int getForwardCount(Map<String, Object> reqMap);
    /**
     * 访问人列表总数
     * @param reqMap
     * @return
     */
    int getVisitListCount(Map<String, Object> reqMap);

    /**
     * 系统通知的数量
     * @param reqMap
     * @return
     */
    int getSystemInformCount(Map<String, Object> reqMap);

    /**
     * 系统通知的列表
     * @param reqMap
     * @return
     */
    List<Map<String, Object>> getSystemInformList(Map<String, Object> reqMap);

    /**
     * 设置系统消息已读
     * @param reqMap
     * @return
     */
    int setSystemInformReaded(Map<String, Object> reqMap);

    /**
     * 获取消息已读的总数
     * @param reqMap
     * @return
     */
    int getUnreadCount(Map<String, Object> reqMap);
    /**
     * 获取每天的访问量
     * @param reqMap
     * @return
     */
    Map<String, Object> getDayVistorCount(Map<String, Object> reqMap);

    /**
     *获取当前用户的积分和额度
     * @param id
     * @return
     */
    Map<String, Object> getCurrentCreditAndIntegration(String id);

    /**
     * 获取一次性的任务列表以及所需要完成的次数
     * @param reqMap
     * @return
     */
    List<Map> getOneTimeTask(Map<String, Object> reqMap);

    /**
     * 已完成的一次性任务的次数
     * @param userId
     * @param id
     * @return
     */
    int getOneTaskTimes(@Param("user_id") String userId, @Param("id") int id);

    /**
     * 申请企业认证
     * @param reqMap
     * @return
     */
    int companyApply(Map<String, Object> reqMap);

    /**
     * 企业认证添加图片
     * @param reqMap
     * @return
     */
    int companyApplyImg(Map<String, Object> reqMap);

    /**
     * 获取审核状态
     * @param id
     * @return
     */
    int getProvementFlag(@Param("id") String id);

    /**
     * 获取审核结束时间
     * @param id
     * @return
     */
    Date getFinishDate(@Param("id") String id);

    /**
     * 获取审核通过时间
     * @param id
     * @return
     */
    Date getPassDate(@Param("id") String id);

    /**
     * 获取已经成为认证企业的天数
     * @param id
     * @return
     */
    String getPassDays(@Param("id") String id);

    /**
     * 修改企业认证申请
     * @param reqMap
     * @return
     */
    int updateCompanyApply(Map<String, Object> reqMap);

    /**
     * 企业认证附件表里是否有此用户
     * @param id
     * @return
     */
    int companyApplyExist(@Param("id") String id);

    /**
     * 获取企业认证详情
     * @param reqMap
     * @return
     */
    Map<String, Object> companyApplyInfo(Map<String, Object> reqMap);

    /**
     * 获取企业认证图片
     * @param reqMap
     * @return
     */
    List<String> getCompanyApplyImageList(Map<String, Object> reqMap);

    /**
     * 删除原先的图片
     * @param reqMap
     * @return
     */
    int deleteCompanyApplyImg(Map<String, Object> reqMap);

    /**
     * 获取企业申请id
     * @param reqMap
     * @return
     */
    String getCompanyApplyId(Map<String, Object> reqMap);

    /**
     * 审核通过时返回的信息
     * @param id
     * @return
     */
    Map<String, Object> companyApplyPassInfo(@Param("id") String id);

    /**
     * 获取任务最多完成多少次
     * @param taskId
     * @return
     */
    int getTaskTimes(@Param("taskId") String taskId);

    List<String> getCompany();

    void updateRecruitPublish(Map<String, Object> reqMap);

    void updateJoberPublish(Map<String, Object> reqMap);

    void updateShopPublish(Map<String, Object> reqMap);

    void UpdateZsPublish(Map<String, Object> reqMap);

    int carDataCalibration(Map<String, Object> reqMap);

    List<Map<String, Object>> getCarDataCalibration(Map<String, Object> reqMap);

    long selectCouponCount(@Param("id") String id);

    /**
     * 获取某类型的未读消息的总数
     * @param reqMap
     * @return
     */
    int getUnreadCountOfType(Map<String, Object> reqMap);

    List<Map<String, Object>> getMessageList(Map<String, Object> reqMap);

    List<Map<String, Object>> getMessageRecordList(Map<String, Object> reqMap);

    /**
     * 更新选中的提醒、系统消息为已读
     * @param reqMap
     * @return
     */
    int updateMessageRecordListForIds(Map<String, Object> reqMap);

    /**
     * 更新服务商下面所有特定类型的提醒、系统消息为已读
     * @param reqMap
     * @return
     */
    int updateMessageRecordListForSid(Map<String, Object> reqMap);

    int updateMessageHandleStatusById(Map<String, Object> paraMap);

    int selectAllRenewalNoHandleMessageCount(Map<String, Object> paraMap);
}